home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-08-22 | 65.1 KB | 2,128 lines |
- This is a new archive version of TRN at patchlevel 3.
- The original posting took up Volume23, issues 60 to 73, with
- various problems. These files replace those issues.
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # Contents: Configure.1 mt.check.SH trn.1.1
- # Wrapped by rsalz@litchi.bbn.com on Fri Aug 23 16:38:52 1991
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 3 (of 14)."'
- if test -f 'Configure.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Configure.1'\"
- else
- echo shar: Extracting \"'Configure.1'\" \(23282 characters\)
- sed "s/^X//" >'Configure.1' <<'END_OF_FILE'
- X#!/bin/sh
- X#
- X# If these # comments don't work, trim them. Don't worry about the other
- X# shell scripts, Configure will trim # comments from them for you.
- X#
- X# $Header: Configure,v 4.3.3.3 91/01/16 02:00:36 davison Trn $
- X#
- X# $Log: Configure,v $
- X# Revision 4.3.3.3 91/01/16 02:00:36 davison
- X# Integrated rn patches 48-54 and tweaked sitename handling.
- X#
- X# Revision 4.3.3.2 90/08/20 16:09:59 davison
- X# Added MMDF support, revised sitename/domain/signal/tzset/PATH.
- X#
- X# Revision 4.3.3.1 90/07/24 21:56:31 davison
- X# Initial Trn Release
- X#
- X# Revision 4.3.2.37 90/12/30 03:46:54 sob
- X# Changed "hidden" to "hiddennet" to be like nntp and bnews.
- X# Made it possible to cancel articles if hiddennet is defined.
- X#
- X# Revision 4.3.2.36 90/12/30 03:31:17 sob
- X# Better NeXT support and some other problems corrected.
- X#
- X# Revision 4.3.2.35 90/12/04 02:51:20 sob
- X# Removed redundant "addcflags" label
- X#
- X# Revision 4.3.2.34 90/11/22 17:49:31 sob
- X# Fixed bug in "hidden" code.
- X#
- X# Revision 4.3.2.33 90/11/22 13:42:44 sob
- X# Added support for the Uniq System V.3 OS (courtesy of a3@rivm.nl &
- X# frans@rivm.nl).
- X# Added support for making all mail and news appear to come from the domain
- X# itself instead of individual hosts within a domain.
- X#
- X# Revision 4.3.2.32 90/11/22 13:30:37 sob
- X# Fixes to make using the supplied ndir.c work correctly.
- X# Fixes to make building rn on an Apollo work correctly.
- X#
- X# Revision 4.3.2.31 90/11/10 00:08:08 sob
- X# This one appears to work for Interactive Unix.
- X#
- X# Revision 4.3.2.30 90/11/09 23:29:16 sob
- X# Added a few line for making rrn under Interactive Unix easier.
- X#
- X# Revision 4.3.2.29 90/11/05 23:26:21 sob
- X# Added detection of /usr/include/sys/ptem.h for more recent versions
- X# of System V.
- X#
- X# Revision 4.3.2.28 90/11/04 03:35:01 sob
- X# Added better detection for getwd() and getcwd(). This will hopefully be
- X# the last hurrah of this problem (naive, aren't I?)
- X#
- X# Revision 4.3.2.27 90/10/06 11:54:56 sob
- X# Added check for memcpy/bcopy.
- X#
- X# Revision 4.3.2.26 90/10/01 01:39:43 sob
- X# Altered the FLAGS for SCO Xenix 286. The old one are commented out. Let's
- X# see if this works better.
- X#
- X# Revision 4.3.2.25 90/05/12 17:34:53 sob
- X# Still more XENIX fixes and fixes for using socketlib when rrn and not when
- X# just rn.
- X#
- X# Revision 4.3.2.24 90/05/12 14:07:43 sob
- X# Fixed up LDFLAGS for xenix 286
- X#
- X# Revision 4.3.2.23 90/05/04 00:42:31 sob
- X# Fixes for Pyramids, more on the return value of signal() and
- X# syncing up the use of socketlib.
- X#
- X# Revision 4.3.2.22 90/04/17 15:44:24 sob
- X# Added better directory structure detection.
- X#
- X# Revision 4.3.2.21 90/04/14 19:36:38 sob
- X# Added better support for the NeXT.
- X#
- X# Revision 4.3.2.20 90/04/14 01:53:36 sob
- X# Spelling Problem!
- X#
- X# Revision 4.3.2.19 90/03/17 21:33:21 sob
- X# Reworked VOIDSIG into SIGRET.
- X#
- X# Revision 4.3.2.18 90/03/17 17:45:25 sob
- X# Changes to detect when to use termio and when not to.
- X#
- X# Revision 4.3.2.17 90/03/17 16:53:11 sob
- X# Applied a patch to correctly determine being on a Sun running OS 4.0 or
- X# later.
- X#
- X# Revision 4.3.2.16 89/12/20 23:20:38 sob
- X# Added hp-ux support suggested by tml@hemuli.atk.vtt.fi. Also,
- X# corrected some bugs reported by tml@hemuli.atk.vtt.fi.
- X#
- X# Revision 4.3.2.15 89/12/18 00:02:04 sob
- X# Fixed bug reported by Jim Thompson <jthomp@sun.com> on the
- X# use of ypmatch against the so-called services.byname YP map.
- X# Sigh. Will YP EVER work?
- X#
- X# Revision 4.3.2.14 89/12/17 12:55:39 sob
- X# Minor bug fix to yp detection code.
- X#
- X# Revision 4.3.2.13 89/12/17 01:53:21 sob
- X# Changed from using ypcat to using ypmatch
- X#
- X# Revision 4.3.2.12 89/12/15 19:35:20 sob
- X# getpwent was not getting defined when YP is present.
- X# bug reported by dglo@ads.com
- X#
- X# Revision 4.3.2.11 89/12/13 00:42:59 sob
- X# Included suggested patches by weening@gang-of-four.stanford.edu.
- X#
- X# Revision 4.3.2.10 89/12/09 01:47:49 sob
- X# Configure now removes myread when exiting.
- X#
- X# Revision 4.3.2.9 89/12/08 22:41:14 sob
- X# Added minor changes suggested by weening@Gang-of-Four.Stanford.EDU and
- X# jik@pit-manager.mit.edu
- X#
- X# Revision 4.3.2.8 89/11/28 00:30:06 sob
- X# Attempted to make some of the references to the news software version
- X# levels more clear for the benefit of novice news installers.
- X#
- X# Revision 4.3.2.7 89/11/27 02:25:26 sob
- X# Better detection of SunOS 4.0 and getpwent will be used on systems
- X# that support YP, just in case.
- X#
- X# Revision 4.3.2.6 89/11/27 01:32:56 sob
- X# Added some changes suggested by various usenet postings.
- X# Limited support for NeXT.
- X#
- X# Revision 4.3.2.5 89/11/08 04:47:27 sob
- X# Added VOIDSIG handling for SunOS 4.X
- X#
- X# Revision 4.3.2.4 89/11/06 00:05:38 sob
- X# Added RRN support originally distributed with NNTP 1.5
- X#
- X# Revision 4.3.2.3 89/11/05 23:35:43 sob
- X# Added checks for ultrix and sun
- X#
- X# Revision 4.3.1.6 86/07/24 14:41:18 lwall
- X# Handles missing Relay-Version: from news 2.10.3 headers.
- X#
- X# Revision 4.3.1.5 85/05/23 11:23:22 lwall
- X# filexp flubs sed command.
- X#
- X# Revision 4.3.1.4 85/05/20 17:13:11 lwall
- X# Makes sure -lcurses is really a terminfo library.
- X# Puts single instead of double quotes around defs in config.sh.
- X#
- X# Revision 4.3.1.3 85/05/16 16:48:48 lwall
- X# Took space from end of filexp output.
- X#
- X# Revision 4.3.1.2 85/05/13 15:54:35 lwall
- X# Libraries in /usr/local/lib shouldn't use -l switch.
- X#
- X# Revision 4.3.1.1 85/05/10 11:29:20 lwall
- X# Branch for patches.
- X#
- X# Revision 4.3 85/05/01 11:31:23 lwall
- X# Baseline for release with 4.3bsd.
- X#
- X
- X# Yes, you may rip this off to use in other distribution packages.
- X
- XWHITE='[ ]'; : there should be a tab and a space between the brackets.
- XCTRLA=''; : there should be a control-A between the single-quotes.
- X
- Xn=''
- Xc=''
- Xlibc=''
- Xeunicefix=''
- Xeunice=''
- Xcpp=''
- Xshsharp=''
- Xspitshell=''
- Xstartsh=''
- Xtest=''
- Xexpr=''
- Xsed=''
- Xecho=''
- Xcat=''
- Xrm=''
- Xmv=''
- Xcp=''
- Xtail=''
- Xtr=''
- Xmkdir=''
- Xsort=''
- Xuniq=''
- Xinews=''
- Xgrep=''
- Xegrep=''
- Xnidump=''
- Xypmatch=''
- Xcontains=''
- Xlib=''
- Xnametype=''
- Xcc=''
- Xiandd=''
- Xinclude=''
- Xrrninclude=''
- Xtermlib=''
- Xjobslib=''
- Xndirlib=''
- Xsocketlib=''
- Xdirtype=''
- Xdirinc=''
- Xlibndir=''
- Xusendir=''
- Xndirc=''
- Xndiro=''
- Xpager=''
- Xmailer=''
- Xinternet=''
- Xrnbin=''
- Xfilexp=''
- Xdistlist=''
- XLog=''
- XHeader=''
- Xsitename=''
- Xhostfile=''
- Xdomain=''
- Xorgname=''
- Xisadmin=''
- Xnewsadmin=''
- Xrnlib=''
- Xmansrc=''
- Xmanext=''
- Xmaildir=''
- Xspool=''
- Xactive=''
- Xmyactive=''
- Xmininact=''
- Xpref=''
- Xdefeditor=''
- Xrootid=''
- Xmboxchar=''
- Xlocpref=''
- Xorgpref=''
- Xcitypref=''
- Xstatepref=''
- Xcntrypref=''
- Xcontpref=''
- Xstrchr=''
- Xmemcpy=''
- Xrename=''
- Xtruncate=''
- Xchsize=''
- Xtzset=''
- Xthreaddef=''
- Xselectdef=''
- Xthreaddir=''
- Xnovoid=''
- Xnovfork=''
- Xportable=''
- Xpassnam=''
- Xberknam=''
- Xusgnam=''
- Xwhoami=''
- Xtermio=''
- Xfcntl=''
- Xioctl=''
- Xptem=''
- Xnormsig=''
- Xsigblock=''
- Xsigret=''
- Xgetuidgid=''
- Xgetcwd=''
- Xgetwd=''
- Xhavetlib=''
- Xgetpwent=''
- Xgethostname=''
- Xdouname=''
- Xphostname=''
- Xhostcmd=''
- Xnorelay=''
- Xisrrn=''
- Xrdchk=''
- Xserverfile=''
- XNNTPSRC=''
- XCONFIG=''
- Xhiddennet=''
- X
- Xecho "Beginning of configuration questions for trn."
- X: Eunice requires " " instead of "", can you believe it
- Xecho " "
- X
- X: sanity checks
- XPATH='.:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc:/usr/bsd'
- Xexport PATH || (echo "OOPS, this isn't sh. Desperation time. I will feed myself to sh."; sh $0; kill $$)
- X
- Xif test ! -t 0; then
- X echo "Type 'sh Configure', not 'sh <Configure'"
- X exit 1
- Xfi
- X
- X: some greps do not return status, grrr.
- Xecho "grimblepritz" >grimble
- Xif grep blurfldyick grimble >/dev/null 2>&1 ; then
- X contains=contains
- Xelse
- X if grep grimblepritz grimble >/dev/null 2>&1 ; then
- X contains=grep
- X else
- X contains=contains
- X fi
- Xfi
- X
- X: the following should work in any shell
- Xcase $contains in
- Xcontains*)
- X echo " "
- X echo "AGH! Grep doesn't return a status. Attempting remedial action."
- X cat >contains <<'EOSS'
- Xgrep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
- XEOSS
- Xchmod 755 contains
- Xesac
- X
- X: first determine how to suppress newline on echo command
- Xecho "Checking echo to see how to suppress newlines..."
- X(echo "hi there\c" ; echo " ") >.echotmp
- Xif $contains c .echotmp >/dev/null 2>&1 ; then
- X echo "...using -n."
- X n='-n'
- X c=''
- Xelse
- X echo "...using \\\c."
- X n=''
- X c='\c'
- Xfi
- Xecho $n "Type carriage return to continue. Your cursor should be here-->$c"
- Xread ans
- Xrm .echotmp
- X
- X: now set up to do reads with possible shell escape
- X: if this does not work on your machine, 1,$s/. myread/read ans/
- Xcat <<EOSC >myread
- Xans='!'
- Xwhile expr "X\$ans" : "X!" >/dev/null; do
- X read ans
- X case "\$ans" in
- X !)
- X sh
- X echo " "
- X echo $n "Your answer: $c"
- X ;;
- X !*)
- X set \`expr "X\$ans" : "X!\(.*\)\$"\`
- X sh -c "\$*"
- X echo " "
- X echo $n "Your answer: $c"
- X ;;
- X esac
- Xdone
- XEOSC
- X
- X: general instructions
- Xcat <<'EOH'
- X
- XThis installation shell script will examine your system and ask you questions
- Xto determine how trn and its auxiliary files should be installed. If you
- Xget stuck on a question, you may use a ! shell escape to start a subshell or
- Xexecute a command. Many of the questions will have default answers in
- Xsquare brackets--typing carriage return will give you the default.
- X
- XOn some of the questions which ask for file or directory names you are
- Xallowed to use the ~name construct to specify the login directory belonging
- Xto "name", even if you don't have a shell which knows about that. Questions
- Xwhere this is allowed will be marked "(~name ok)".
- X
- XMuch effort has been expended to ensure that this shell script will run
- Xon any Unix system. If despite that it blows up on you, your best bet is to
- Xedit Configure and run it again. (Trying to install trn without having run
- XConfigure is well nigh impossible.) Also, tell Wayne (davison@dri.com)
- Xhow he blew it.
- X
- XThis installation script affects things in two ways: 1) it does direct
- Xvariable substitutions on some of the files included in this kit, and
- X2) it builds a config.h file for inclusion in C programs. You may edit
- Xany of these files as the need arises after running this script.
- X
- XEOH
- Xecho $n "[Type carriage return to continue] $c"
- X. myread
- XXn=$n
- XXc=$c
- X: get old answers, if there is a config file out there
- Xif test -f config.sh; then
- X echo " "
- X echo "(Fetching default answers from your old config.sh file...)"
- X . ./config.sh
- Xfi
- Xn=$Xn
- Xc=$Xc
- X
- X: get list of predefined functions in a handy place
- Xecho " "
- Xif test -f /lib/libc.a; then
- X echo "Your C library is in /lib/libc.a. You're normal."
- X libc=/lib/libc.a
- Xelse
- X if test -f /lib/Llibc.a; then
- X echo "Your C library is in /lib/Llibc.a. I smell Xenix!"
- X libc=/lib/Llibc.a
- X else
- X if test -f /usr/lib/libc.a; then
- X echo "Your C library is in /usr/lib/libc.a, of all places."
- X libc=/usr/lib/libc.a
- X else
- X if test -f /lib/clib; then
- X echo "Your C library is in /lib/clib. How nonstandard, must be Apollo."
- X libc=/lib/clib
- X else
- X if test -f "$libc"; then
- X echo "Your C library is in $libc, like you said before."
- X else
- X cat <<'EOM'
- X
- XI can't seem to find your C library. I've looked for /lib/libc.a and
- X/usr/lib/libc.a, but neither of those are there. Perhaps you can find
- Xout by reading `man 3 intro' if you have the 'man' facility installed.
- X
- XEOM
- X echo $n "What is the full name of your C library? $c"
- X . myread
- X libc="$ans"
- X fi
- X fi
- X fi
- X fi
- Xfi
- Xecho " "
- Xecho $n "Extracting names from $libc for later perusal...$c"
- Xif ar t $libc >libc.list 2>/dev/null; then
- X echo "done"
- Xelse
- X if test $libc = /lib/clib; then
- X if nm -g $libc | sed -e 's/$/.o/' >libc.list; then
- X echo "done"
- X else
- X echo " "
- X echo "Apparently $libc is not an object module. Try again."
- X exit 1
- X fi
- X else
- X echo " "
- X echo "The archiver doesn't think $libc is a reasonable library."
- X exit 1
- X fi
- Xfi
- X: make some quick guesses about what we are up against
- Xecho " "
- Xecho $n "Hmm... $c"
- Xif $contains sigvec.o libc.list >/dev/null 2>&1 ; then
- X echo "Looks kind of like a BSD system, but we'll see..."
- X echo exit 0 >bsd
- X echo exit 1 >usg
- X echo exit 1 >v7
- Xelse
- X if $contains dup2.o libc.list >/dev/null 2>&1 ; then
- X echo "Looks sort of like a V7 system, but we'll see..."
- X echo exit 1 >bsd
- X echo exit 1 >usg
- X echo exit 0 >v7
- X else
- X echo "Looks kind of like a USG system, but we'll see..."
- X echo exit 1 >bsd
- X echo exit 0 >usg
- X echo exit 1 >v7
- X fi
- Xfi
- X:
- Xif test -f /etc/inittab; then
- X echo "You have an inittab file. You must be a USG system!"
- X echo exit 1 >bsd
- X echo exit 0 >usg
- X echo exit 1 >v7
- Xfi
- Xif $contains vmssystem.o libc.list >/dev/null 2>&1 ; then
- X cat <<'EOI'
- XThere is, however, a strange, musty smell in the air that reminds me of
- Xsomething...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
- XEOI
- X echo "exit 0" >eunice
- X eunicefix=unixtovms
- X eunice=define
- X: it so happens the Eunice I know will not run shell scripts in Unix format
- Xelse
- X echo " "
- X echo "Congratulations. You aren't running Eunice."
- X eunicefix=':'
- X eunice=undef
- X echo "exit 1" >eunice
- Xfi
- Xchmod 755 bsd usg v7 eunice
- X$eunicefix bsd usg v7 eunice
- X: see how we invoke the C preprocessor
- Xecho " "
- Xecho "Checking to see how your C preprocessor is invoked..."
- Xcat <<'EOT' >testcpp.c
- X#define ABC abc
- X#define XYZ xyz
- XABC+XYZ
- XEOT
- Xecho 'Maybe "cc -E" will work...'
- Xcc -E testcpp.c >testcpp.out 2>&1
- Xif $contains 'abc+xyz' testcpp.out >/dev/null 2>&1 ; then
- X echo "Yup, it does."
- X cpp='cc -E'
- Xelse
- X echo 'Nope...maybe "cc -P" will work...'
- X cc -P testcpp.c >testcpp.out 2>&1
- X if $contains 'abc+xyz' testcpp.out >/dev/null 2>&1 ; then
- X echo "Yup, that does."
- X cpp='cc -P'
- X else
- X echo 'Nixed again...maybe "/lib/cpp" will work...'
- X /lib/cpp testcpp.c >testcpp.out 2>&1
- X if $contains 'abc+xyz' testcpp.out >/dev/null 2>&1 ; then
- X echo "Hooray, it works! I was beginning to wonder."
- X cpp='/lib/cpp'
- X else
- X if $contains 'abc +xyz' testcpp.out >/dev/null 2>&1 ; then
- X echo "Found it! You're on a NeXT, aren't you?"
- X cpp='/lib/cpp'
- X else
- X echo 'Hmm...maybe you already told me...'
- X case "$cpp" in
- X '') ;;
- X *) $cpp testcpp.c >testcpp.out 2>&1;;
- X esac
- X if $contains 'abc+xyz' testcpp.out >/dev/null 2>&1 ; then
- X echo "Hooray, you did! I was beginning to wonder."
- X else
- X echo "Nope. I can't find a C preprocessor. Name one: $c"
- X . myread
- X cpp="$ans"
- X $cpp testcpp.c >testcpp.out 2>&1
- X if $contains 'abc+xyz' testcpp.out >/dev/null 2>&1 ; then
- X echo "OK, that will do."
- X else
- X echo "Sorry, I can't get that to work. Go find one."
- X exit 1
- X fi
- X fi
- X fi
- X fi
- X fi
- Xfi
- Xrm -f testcpp.c testcpp.out
- X: check for pdp11
- Xecho " "
- Xcat <<'EOT' >pdp11.c
- X#ifdef pdp11
- Xexit 0
- X#else
- Xexit 1
- X#endif
- XEOT
- X$cpp pdp11.c | grep exit >pdp11
- Xchmod 755 pdp11
- X$eunicefix pdp11
- Xrm pdp11.c
- Xif pdp11; then
- X echo "This looks like a pdp11 to me."
- Xfi
- X: check for ultrix
- Xcat <<'EOT' >ultrix.c
- X#ifdef ultrix
- Xexit 0
- X#else
- Xexit 1
- X#endif
- XEOT
- X$cpp ultrix.c | grep exit >ultrix
- Xchmod 755 ultrix
- X$eunicefix ultrix
- Xrm ultrix.c
- Xif ultrix; then
- X echo "Running ultrix, eh?"
- Xfi
- X
- X: check for sun 4.0
- Xcat <<'EOT' >sun.c
- X#ifdef sun
- Xexit 0
- X#else
- Xexit 1
- X#endif
- XEOT
- X$cpp sun.c | grep exit >sun
- Xchmod 755 sun
- X$eunicefix sun
- Xrm sun.c
- Xif sun; then
- X echo "This looks like a sun to me."
- X if test -f /etc/ld.so.cache ; then
- X echo "And it appears you are running SunOS 4.0 or greater."
- X fi
- Xfi
- X: check for hp-ux
- Xcat <<'EOT' >hp-ux.c
- X#ifdef hpux
- Xexit 0
- X#else
- Xexit 1
- X#endif
- XEOT
- X$cpp hp-ux.c | grep exit >hp-ux
- Xchmod 755 hp-ux
- X$eunicefix hp-ux
- Xrm hp-ux.c
- Xif hp-ux; then
- X echo "Hewlett-Packard must have built this..."
- X socketlib=-lbsdipc
- Xfi
- X
- X: check for sgi
- Xcat <<'EOT' >sgi.c
- X#ifdef sgi
- Xexit 0
- X#else
- Xexit 1
- X#endif
- XEOT
- X$cpp sgi.c | grep exit >sgi
- Xchmod 755 sgi
- X$eunicefix sgi
- Xrm sgi.c
- Xif sgi; then
- X echo "Silicon Graphics must have built this..."
- X include=-I/usr/include/bsd
- X rrninclude="-I/usr/include/bsd -DUSG"
- X socketlib=-lbsd
- Xfi
- X
- X: check for XENIX
- Xcat <<'EOT' >xenix
- Xtest -f /xenix; exit $?
- XEOT
- Xchmod 755 xenix
- X$eunicefix xenix
- Xif xenix; then
- X echo "Kinda looks like XENIX....hmmm"
- X rrninclude="-DUSG -DLAI_TCP"
- X socketlib=-lsocket
- X rdchk=define
- X dirtype=dirent
- Xelse
- X rdchk=undef
- Xfi
- X
- X: check for Pyramid OSx
- Xcat <<'EOT' >pyr.c
- X#ifdef pyr
- Xexit 0
- X#else
- Xexit 1
- X#endif
- XEOT
- X$cpp pyr.c | grep exit >pyr
- Xchmod 755 pyr
- X$eunicefix pyr
- Xrm pyr.c
- Xif pyr; then
- X echo "This looks like a Pyramid to me."
- Xfi
- X
- X: check for NeXT
- Xcat <<'EOT' >next.c
- X#ifdef NeXT
- Xexit 0
- X#else
- Xexit 1
- X#endif
- XEOT
- X$cpp next.c | grep exit >next
- Xchmod 755 next
- X$eunicefix next
- Xrm next.c
- Xif next; then
- X echo "My, you really ARE on a NeXT."
- X addcflags='-bsd'
- Xfi
- X
- Xif bsd; then
- X getuidgid=define
- Xelse
- X getuidgid=undef
- Xfi
- X
- Xcat <<'EOT' > s5uniq
- Xif test -f /bin/uname
- Xthen
- X case `uname -r -m` in
- X "5.3 vax-"*)
- X if [ -f /usr/lib/libnet.a \
- X -a -f /usr/lib/libhdb.a \
- X -a -f /usr/lib/libbbn.a \
- X -a -f /usr/lib/libstr.a ]
- X then
- X exit 0
- X fi;;
- X esac
- Xfi
- Xexit 1
- XEOT
- Xchmod 755 s5uniq
- Xif s5uniq; then
- X echo "This looks like Uniq. What a pity."
- X socketlib="-lnet -lhdb -lbbn -lstr"
- X rrninclude="-DR_UNIQ -DUSG"
- X # -DR_UNIQ and -DUSG are needed for ~nntp/common/clientlib.c
- Xfi
- X
- X: see if sh knows # comments
- Xecho " "
- Xecho "Checking your sh to see if it knows about # comments..."
- Xif sh -c '#' >/dev/null 2>&1 ; then
- X echo "Your sh handles # comments correctly."
- X shsharp=true
- X spitshell=cat
- X echo " "
- X echo "Okay, let's see if #! works on this system..."
- X echo "#!/bin/echo hi" > try
- X $eunicefix try
- X chmod 755 try
- X try > today
- X if test -s today; then
- X echo "It does."
- X sharpbang='#!'
- X else
- X echo "#! /bin/echo hi" > try
- X $eunicefix try
- X chmod 755 try
- X try > today
- X if test -s today; then
- X echo "It does."
- X sharpbang='#! '
- X else
- X echo "It doesn't."
- X sharpbang=': use '
- X fi
- X fi
- Xelse
- X echo "Your sh doesn't grok # comments--I will strip them later on."
- X shsharp=false
- X echo "exec grep -v '^#'" >spitshell
- X chmod 755 spitshell
- X $eunicefix spitshell
- X spitshell=`pwd`/spitshell
- X echo "I presume that if # doesn't work, #! won't work either!"
- X sharpbang=': use '
- Xfi
- X
- X: figure out how to guarantee sh startup
- Xecho " "
- Xecho "Checking out how to guarantee sh startup..."
- Xstartsh=$sharpbang'/bin/sh'
- Xecho "Let's see if '$startsh' works..."
- Xcat >try <<EOSS
- X$startsh
- Xset abc
- Xtest "$?abc" != 1
- XEOSS
- X
- Xchmod 755 try
- X$eunicefix try
- Xif try; then
- X echo "Yup, it does."
- Xelse
- X echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
- Xfi
- Xrm -f try today
- X
- X: find out where common programs are
- Xecho " "
- Xecho "Locating common programs..."
- Xpth="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /etc /usr/lib /usr/etc /usr/5bin"
- Xcat <<EOSC >loc
- X$startsh
- Xthing=\$1
- Xshift
- Xdflt=\$1
- Xshift
- Xfor dir in \$*; do
- X case "\$thing" in
- X .)
- X if test -d \$dir/\$thing; then
- X echo \$dir
- X exit 0
- X fi
- X ;;
- X *)
- X if test -f \$dir/\$thing; then
- X echo \$dir/\$thing
- X exit 0
- X fi
- X ;;
- X esac
- Xdone
- Xecho \$dflt
- Xexit 1
- XEOSC
- Xchmod 755 loc
- X$eunicefix loc
- Xloclist="expr sed echo cat rm mv cp tail tr mkdir sort uniq grep"
- Xtrylist="test inews egrep more pg Mcc nidump ypmatch"
- Xfor file in $loclist; do
- X xxx=`loc $file $file $pth`
- X eval $file=$xxx
- X case "$xxx" in
- X /*)
- X echo $file is in $xxx.
- X ;;
- X *)
- X echo "I don't know where $file is. I hope it's in everyone's PATH."
- X ;;
- X esac
- Xdone
- Xecho " "
- Xecho "Don't worry if any of the following aren't found..."
- Xfor file in $trylist; do
- X xxx=`loc $file $file $pth`
- X eval $file=$xxx
- X case "$xxx" in
- X /*)
- X echo $file is in $xxx.
- X ;;
- X *)
- X echo "I don't see $file out there, offhand."
- X ;;
- X esac
- Xdone
- Xcase $egrep in
- Xegrep)
- X echo "Substituting grep for egrep."
- X egrep=$grep
- X ;;
- Xesac
- Xcase $test in
- Xtest)
- X echo "Hopefully test is built into your sh."
- X ;;
- X/bin/test)
- X echo " "
- X echo $n 'Is your "test" built into sh? [n] (OK to guess) '"$c"
- X . myread
- X case $ans in
- X y*) test=test ;;
- X esac
- X ;;
- X*)
- X test=test
- X ;;
- Xesac
- Xcase $echo in
- Xecho)
- X echo "Hopefully echo is built into your sh."
- X ;;
- X/bin/echo)
- X echo " "
- X echo "Checking compatibility between /bin/echo and builtin echo (if any)..."
- X $echo $n "hi there$c" >foo1
- X echo $n "hi there$c" >foo2
- X if cmp foo1 foo2 >/dev/null 2>&1; then
- X echo "They are compatible. In fact, they may be identical."
- X else
- X echo "They are not compatible--the echo builtin will be used."
- X echo=echo
- X fi
- X $rm -f foo1 foo2
- X ;;
- X*)
- X echo=echo
- X ;;
- Xesac
- X$echo " "
- X: test yp
- Xcase $ypmatch in
- Xypmatch)
- X $echo "I don't see ypmatch out there, so YP is not available. We'll search the"
- X $echo "passwd file the old fashioned way!"
- X ;;
- X*)
- X $ypmatch 513/tcp services > /dev/null 2>/dev/null
- X status=$?
- X if $test $status -ne 0 ; then
- X $echo "YP installed, but not operational. We won't use it."
- X ypmatch=""
- X else
- X $echo "YP installed and operational."
- X fi
- X
- X ;;
- Xesac
- Xif $test "$nidump" = "nidump"; then
- X nidump=""
- Xfi
- Xif $test "$ypmatch" = "ypmatch"; then
- X ypmatch=""
- Xfi
- X
- X: decide how portable to be
- Xcase "$portable" in
- Xdefine) dflt=y;;
- X*) dflt=n;;
- Xesac
- X$cat <<'EOH'
- X
- XI can set things up so that your shell scripts and binaries are more portable,
- Xat what may be a noticable cost in performance. In particular, if you
- Xask to be portable, the following happens:
- X
- X 1) shell scripts will rely on the PATH variable rather than using
- X the paths derived above.
- X 2) ~username interpretations will be done at run time rather than
- X by Configure.
- X 3) the system name will be determined at run time, if at all possible.
- X
- XEOH
- X$echo $n "Do you expect to run these scripts and binaries on multiple machines? [$dflt] $c"
- X. myread
- Xcase $ans in
- X'') ans=$dflt;;
- Xesac
- Xcase $ans in
- X y*) portable=define
- X for file in $loclist; do
- X eval $file=$file
- X done
- X ;;
- X *) portable=undef ;;
- Xesac
- X
- X: set up shell script to do ~ expansion
- Xcat >filexp <<EOSS
- X$startsh
- X: expand filename
- Xcase \$1 in
- X~/*|~)
- X $echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
- X ;;
- X~*)
- X if $test -f /bin/csh; then
- X /bin/csh -f -c "glob \$1"
- X $echo ""
- X else
- X name=\`$expr x\$1 : '..\([^/]*\)'\`
- X if $test "$ypmatch" != ""; then
- X dir=\`$ypmatch \$name passwd 2>/dev/null | $sed "s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/"'\`
- X elif $test "$nidump" != ""; then
- X dir=\`$nidump passwd / | $sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}'\`
- X fi
- X if $test "\$dir" = ""; then
- X dir=\`$sed </etc/passwd -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}'\`
- X fi
- X if $test ! -d "\$dir"; then
- X me=\`basename \$0\`
- X $echo "\$me: can't locate home directory for: \$name" >&2
- X exit 1
- X fi
- X case \$1 in
- X */*)
- X $echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
- X ;;
- X *)
- X $echo \$dir
- X ;;
- X esac
- X fi
- X ;;
- X*)
- X $echo \$1
- X ;;
- Xesac
- XEOSS
- Xchmod 755 filexp
- X$eunicefix filexp
- X
- X: try to deal with domains
- X$cat << 'EOH'
- X
- XPlease enter your domain name. This will be used in conjunction with the
- Xsite name for return addresses on news articles and mail. If you use the
- X4.3ism of having your domain in your hostname, all the posting programs
- Xwill figure this out on the fly, so don't worry.
- X
- XExamples of some valid domains:
- X berkeley.edu
- X nasa.gov
- XExample of an invalid domain in common use:
- X uucp
- XEOH
- X
- Xcase "$domain" in
- X'') dflt="uucp";;
- END_OF_FILE
- if test 23282 -ne `wc -c <'Configure.1'`; then
- echo shar: \"'Configure.1'\" unpacked with wrong size!
- fi
- # end of 'Configure.1'
- fi
- if test -f 'mt.check.SH' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mt.check.SH'\"
- else
- echo shar: Extracting \"'mt.check.SH'\" \(1362 characters\)
- sed "s/^X//" >'mt.check.SH' <<'END_OF_FILE'
- Xcase $CONFIG in
- X '') . ./config.sh ;;
- Xesac
- Xecho "Extracting mt.check (with variable substitutions)"
- X$spitshell >mt.check <<!GROK!THIS!
- X$startsh
- X# $Header: mt.check.SH,v 4.3.3.3 91/01/16 02:50:10 davison Trn $
- X#
- X# $Log: mt.check.SH,v $
- X# Revision 4.3.3.3 91/01/16 02:50:10 davison
- X# Added missing grok line at eof.
- X#
- X# Revision 4.3.3.2 90/08/20 16:42:10 davison
- X# Changed email address.
- X#
- X# Revision 4.3.3.1 90/06/20 23:00:07 davison
- X# Initial Trn Release
- X#
- X# mt.check - daily maintenance for mt.log
- X#
- X# Check mt.log for earth-shattering errors, and mail them to \$gurus if found.
- X# Then move the mt.log file into a week-long history chain.
- X#
- X# Usage: mt.check
- X#
- X
- Xgurus="$newsadmin"
- Xtmp="/tmp/mt.c\$\$"
- X
- XPATH=/bin:/usr/bin
- Xexport PATH
- X
- Xumask 002
- X
- Xtrap "rm -f \$tmp ; exit 0" 0 1 2 15
- X
- Xcd $rnlib
- X
- X$egrep " \\*\\*\$" mt.log >\$tmp
- X
- Xif test -s \$tmp ; then
- X (cat <<EOT
- XTo: \$gurus
- XSubject: mthreads error!
- X
- XThe following errors were reported in mt.log. If they persist, please
- Xreport this fact to Wayne Davison (davison@borland.com).
- X
- XEOT
- X cat \$tmp) | mail \$gurus
- Xfi
- X
- Xtest -f mt.log.6 && mv mt.log.6 mt.log.7
- Xtest -f mt.log.5 && mv mt.log.5 mt.log.6
- Xtest -f mt.log.4 && mv mt.log.4 mt.log.5
- Xtest -f mt.log.3 && mv mt.log.3 mt.log.4
- Xtest -f mt.log.2 && mv mt.log.2 mt.log.3
- Xtest -f mt.log && mv mt.log mt.log.2
- Xtouch mt.log
- X
- Xexit 0
- X!GROK!THIS!
- END_OF_FILE
- if test 1362 -ne `wc -c <'mt.check.SH'`; then
- echo shar: \"'mt.check.SH'\" unpacked with wrong size!
- fi
- chmod +x 'mt.check.SH'
- # end of 'mt.check.SH'
- fi
- if test -f 'trn.1.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'trn.1.1'\"
- else
- echo shar: Extracting \"'trn.1.1'\" \(37631 characters\)
- sed "s/^X//" >'trn.1.1' <<'END_OF_FILE'
- X''' $Header: trn.1,v 4.3.3.3 91/01/16 03:38:44 davison Trn $
- X'''
- X''' $Log: trn.1,v $
- X''' Revision 4.3.3.3 91/01/16 03:38:44 davison
- X''' Integrated rn patches 48-54.
- X'''
- X''' Revision 4.3.3.2 90/08/20 16:50:51 davison
- X''' Changed email address.
- X'''
- X''' Revision 4.3.3.1 90/07/24 21:30:38 davison
- X''' Initial Trn Release
- X'''
- X''' Revision 4.3.2.2 90/12/12 03:48:54 sob
- X''' Added documentation for the new "N" command at startup newsgroup
- X''' selection.
- X'''
- X''' Revision 4.3.2.1 90/11/26 02:12:34 sob
- X''' Added information about environmental variables NEWSRC and NNTPSERVER.
- X'''
- X''' Revision 4.3.1.10 90/11/06 01:17:29 sob
- X''' Added text about new Y response when adding newsgroups.
- X'''
- X''' Revision 4.3.1.9 90/05/08 22:05:11 sob
- X''' Added documentation for new -q flag
- X'''
- X''' Revision 4.3.1.8 90/03/17 17:09:56 sob
- X'''
- X''' added documentation for MODSTRING and NOPOSTRING.
- X'''
- X''' Revision 4.3.1.7 89/11/28 00:28:10 sob
- X''' Changed some usages of "say" and "saying" to "type" and "typing"
- X'''
- X''' Revision 4.3.2.1 89/11/26 19:00:39 sob
- X''' Added modifications to reflect reality.
- X'''
- X''' Revision 4.3.1.5 85/09/10 11:05:55 lwall
- X''' Improved %m in in_char().
- X'''
- X''' Revision 4.3.1.4 85/07/23 18:26:40 lwall
- X''' Added MAILCALL.
- X'''
- X''' Revision 4.3.1.3 85/05/23 17:14:14 lwall
- X''' Now allows 'r' and 'f' on null articles.
- X'''
- X''' Revision 4.3.1.2 85/05/13 09:27:53 lwall
- X''' Added CUSTOMLINES option.
- X'''
- X''' Revision 4.3.1.1 85/05/10 11:38:22 lwall
- X''' Branch for patches.
- X'''
- X''' Revision 4.3 85/05/01 11:48:26 lwall
- X''' Baseline for release with 4.3bsd.
- X'''
- X'''
- X.de Sh
- X.br
- X.ne 5
- X.PP
- X\fB\\$1\fR
- X.PP
- X..
- X.de Sp
- X.if t .sp .5v
- X.if n .sp
- X..
- X.de Ip
- X.br
- X.ie \\n.$>=3 .ne \\$3
- X.el .ne 3
- X.IP "\\$1" \\$2
- X..
- X'''
- X''' Set up \*(-- to give an unbreakable dash;
- X''' string Tr holds user defined translation string.
- X''' Bell System Logo is used as a dummy character.
- X'''
- X.tr \(bs-|\(bv\*(Tr
- X.ie n \{\
- X.ds -- \(bs-
- X.if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch
- X.if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch
- X.ds L" ""
- X.ds R" ""
- X.ds L' '
- X.ds R' '
- X'br\}
- X.el\{\
- X.ds -- \(em\|
- X.tr \*(Tr
- X.ds L" ``
- X.ds R" ''
- X.ds L' `
- X.ds R' '
- X'br\}
- X.TH TRN 1 LOCAL
- X.UC 6
- X.SH NAME
- Xtrn - threaded read news program
- X.SH SYNOPSIS
- X.B trn [options] [newsgroups]
- X.SH DESCRIPTION
- X.I Trn
- Xis a threaded version of
- X.I rn,
- Xwhich is a replacement for the readnews(1) program.
- XBeing \*(L"threaded\*(R" means that the articles are interconnected
- Xin reply order.
- XEach discussion thread is a tree of articles, where all the
- Xreply (child) articles branch off from their respective originating
- X(parent) articles.
- XA representation of this tree (or a portion of it) is displayed in the
- Xarticle header as you are reading news.
- XThis gives you a better feel for how all the articles are related, and
- Xeven lets you see at a glance when an article already has a plethora of
- Xreplies (to avoid beating a subject to death).
- XIn addition,
- X.I trn
- Xhas a thread selector menu that allows you to quickly browse
- Xthe subjects and authors of the available threads and choose the
- Xones you find interesting.
- XThe remaining threads can either be saved for later or marked as read.
- X.PP
- XIf you are already familiar with
- X.I rn
- Xyou will probably want to skip forward to the section on the
- X.IR "Thread Selection Mode" ,
- Xthen move on to read about the
- X.IR "Tree Display" ,
- Xand finish with the summary of
- X.IR "What's New" ?
- Xwith
- X.IR trn .
- XIf you're impatient, just dive in and get started.
- XAll the regular commands are the same as those in
- X.IR rn ,
- Xand the on-line help will give you a quick run-down of what new commands are
- Xavailable.
- XJust type \*(L'h\*(R' from any prompt.
- XI'd suggest using the command:
- X.Sp
- X trn \-x \-X
- X.Sp
- Xto make sure some of the best new features are turned on.
- X.Sh "Starting Trn"
- XIf no newsgroups are specified, all the newsgroups which have unread news
- Xare displayed, and then the user is asked for each one whether he wants to
- Xread it, in the order in which the newsgroups occur in the
- X.I .newsrc
- Xfile.
- XWith a list of newsgroups,
- X.I trn
- Xwill start up in \*(L"add\*(R" mode, using the list as a set of patterns to
- Xadd new newsgroups and restrict which newsgroups are displayed.
- XSee the discussion of the \*(L'a\*(R' command on the newsgroup selection
- Xlevel.
- X.PP
- X.I Trn
- Xoperates on four levels: the newsgroup selection level, the thread
- Xselection level, the article selection level, and the paging level.
- XEach level has its own set of commands, and its own help menu.
- XAt the paging level (the bottom level),
- X.I trn
- Xbehaves much like the
- X.IR more (1)
- Xprogram.
- XAt the thread selection level, you are presented with the subjects and
- X(optionally) authors associated with each discussion thread, and given
- Xa chance to choose which ones you wish to read now, save for later, or
- Xmanipulate in some way.
- XAt the article selection level, you may read them in the default order
- X(which follows the discussion of the articles and their replies), or jump
- Xaround from one article to another.
- XAt the newsgroup selection level (the top level), you may specify which
- Xnewsgroup you want next, or read them in the default order, which is the
- Xorder that the newsgroups occur in your
- X.I .newsrc
- Xfile.
- X(You will therefore want to rearrange your
- X.I .newsrc
- Xfile to put the most interesting newsgroups first.
- XThis can be done with the \*(L'm\*(R' command on the Newsgroup Selection level.
- XWARNING: invoking readnews/vnews (the old user interface) in any way (including
- Xas a news checker in your login sequence!) will cause your
- X.I .newsrc
- Xto be disarranged again.)
- X.PP
- XNote: your news administrator has the option of turning thread processing
- Xoff for individual groups, and thus it is possible for some groups to not
- Xhave any thread information available for
- X.I trn
- Xto use.
- XWhen this happens the group will be displayed in the traditional
- X.I rn
- Xfashion\*(--articles arranged in arrival order with optional subject
- Xsearching and no thread selector.
- X.PP
- XOn any level, at ANY prompt, help is available in the form of a summary of
- Xavailable commands and what they do by typing an \*(L'h\*(R'.
- XThis is probably the most important command to remember, so don't you
- Xforget it.
- X.PP
- XTyping space to any question means to do the normal thing.
- XYou will know what that is because
- Xevery prompt has a list of several plausible commands enclosed in
- Xsquare brackets.
- XThe first command in the list is the one which will be done if you type
- Xa space.
- X(All input is done in cbreak mode, so carriage returns should not be typed
- Xto terminate anything except certain multi-character commands.
- XThose commands will be obvious in the discussion below because they take an
- Xargument.)
- X.PP
- XUpon startup,
- X.I trn
- Xwill do several things:
- X.Ip 1. 4
- XIt will look for your
- X.I .newsrc
- Xfile, which is your list of subscribed-to
- Xnewsgroups.
- XIf
- X.I trn
- Xdoesn't find a
- X.IR .newsrc ,
- Xit will create one.
- XIf it does find one, it will back it up under the name \*(L".oldnewsrc\*(R".
- X.Ip 2. 4
- XIt will input your
- X.I .newsrc
- Xfile, listing out the first several newsgroups
- Xwith unread news.
- X.Ip 3. 4
- XIt will perform certain consistency checks on your
- X.IR .newsrc .
- XIf your
- X.I .newsrc
- Xis out of date in any of several ways,
- X.I trn
- Xwill warn you and patch it up for you, but you may have to wait a little
- Xlonger for it to start up.
- X.Ip 4. 4
- X.I Trn
- Xwill next check to see if any new newsgroups have been created, and give
- Xyou the opportunity to add them to your
- X.IR .newsrc .
- X.Ip 5. 4
- X.I Trn
- Xgoes into the top prompt level\*(--the newsgroup selection level.
- X.Sh "Newsgroup Selection Level"
- XIn this section the words \*(L"next\*(R" and \*(L"previous\*(R" refer to
- Xthe ordering of the newsgroups in your
- X.I .newsrc
- Xfile.
- XOn the newsgroup selection level, the prompt looks like this:
- X.Sp
- X******** 17 unread articles in talk.blurfl\*(--read now? [ynq]
- X.Sp
- Xand the following commands may be given at this level:
- X.Ip y,SP 8
- XDo this newsgroup now.
- X.Ip .command 8
- XDo this newsgroup now, but execute
- X.I command
- Xbefore displaying anything.
- XThe command will be interpreted as if given on the article selection level.
- X.Ip \+ 8
- XEnter this newsgroup through the thread selector.
- X.Ip = 8
- XStart this newsgroup, but list subjects before displaying articles.
- X.Ip U 8
- XEnter this newsgroup through the \*(L"Set unread\*(R" prompt.
- X.Ip n 8
- XGo to the next newsgroup with unread news.
- X.Ip N 8
- XGo to the next newsgroup.
- X.Ip p 8
- XGo to the previous newsgroup with unread news.
- XIf there is none, stay at the current newsgroup.
- X.Ip P 8
- XGo to the previous newsgroup.
- X.Ip \- 8
- XGo to the previously displayed newsgroup (regardless of whether it is
- Xbefore or after the current one in the list).
- X.Ip 1 8
- XGo to the first newsgroup.
- X.Ip ^ 8
- XGo to the first newsgroup with unread news.
- X.Ip $ 8
- XGo to the end of the newsgroups list.
- X.Ip "g newsgroup" 8
- XGo to
- X.IR newsgroup .
- XIf it isn't currently subscribed to, you will be asked if you want to
- Xsubscribe.
- X.Ip "/pattern" 8
- XScan forward for a newsgroup matching
- X.IR pattern .
- XPatterns do globbing like filenames, i.e., use ? to match a single
- Xcharacter, * to match any sequence of characters, and [] to specify a list
- Xof characters to match.
- X(\*(L"all\*(R" may be used as a synonym for \*(L"*\*(R".)
- XUnlike normal filename globbing, newsgroup searching is not anchored to
- Xthe front and back of the filename, i.e. \*(L"/ski\*(R" will find
- Xrec.skiing.
- XYou may use ^ or $ to anchor the front or back of the search:
- X\*(L"/^test$\*(R" will find newsgroup test and nothing else
- XIf you want to include newsgroups with 0 unread articles, append /r.
- XIf the newsgroup is not found between the current newsgroup and the last
- Xnewsgroup, the search will wrap around to the beginning.
- X.Ip "?pattern" 8
- XSame as /, but search backwards.
- X.Ip u 8
- XUnsubscribe from the current newsgroup.
- X.Ip "l string" 8
- XList newsgroups not subscribed to which contain the string specified.
- X.Ip L 8 13v
- XLists the current state of the
- X.IR .newsrc ,
- Xalong with status information.
- X.Sp
- X.nf
- X \h'|0.5i'Status \h'|2i'Meaning
- X \h'|0.5i'<number> \h'|2i'Count of unread articles in newsgroup.
- X \h'|0.5i'READ \h'|2i'No unread articles in newsgroup.
- X \h'|0.5i'UNSUB \h'|2i'Unsubscribed newsgroup.
- X \h'|0.5i'BOGUS \h'|2i'Bogus newsgroup.
- X \h'|0.5i'JUNK \h'|2i'Ignored line in .newsrc
- X\h'|2i'(e.g. readnews \*(L"options\*(R" line).
- X.fi
- X.Sp
- X(A bogus newsgroup is one that is not in the list of active newsgroups
- Xin the active file, which on most systems is /usr/lib/news/active unless
- Xyou use NNTP.)
- X.Ip "m name" 8
- XMove the named newsgroup somewhere else in the
- X.IR .newsrc .
- XIf no name is given, the current newsgroup is moved.
- XThere are a number of ways to specify where you want the newsgroup\*(--type
- Xh for help when it asks where you want to put it.
- X.Ip c 8
- XCatch up\*(--mark all unread articles in this newsgroup as read.
- X.Ip "o pattern" 8
- XOnly display those newsgroups whose name matches
- X.IR pattern .
- XPatterns are the same as for the \*(L'/\*(R' command.
- XMultiple patterns may be separated by spaces, just as on the
- Xcommand line.
- XThe restriction will remain in effect either until there are no articles
- Xleft in the restricted set of newsgroups, or another restriction command
- Xis given.
- XSince
- X.I pattern
- Xis optional, \*(L'o\*(R' by itself will remove the
- Xrestriction.
- X.Ip "a pattern" 8
- XAdd new newsgroups matching
- X.IR pattern .
- XNewsgroups which are already in your
- X.I .newsrc
- Xfile, whether subscribed to or
- Xnot, will not be listed.
- XIf any new newsgroups are found, you will be asked for each one whether
- Xyou would like to add it. If you want to add all new newsgroups, you can
- Xtype \*(L'Y\*(R' and they will be added the the end of the
- X.I .newsrc
- Xfile and as groups you want to read. If you don't want to subscribe, all
- Xthe new groups can be added by typing \*(L'N\*(R'.
- XAfter any new newsgroups have been added, the \*(L'a\*(R' command also
- Xrestricts the current set of newsgroups just like the \*(L'o\*(R' command
- Xdoes.
- X.Ip & 8
- XPrint out the current status of command line switches and any newsgroup
- Xrestrictions.
- X.Ip "&switch {switch}" 8
- XSet additional command line switches.
- X.Ip && 8
- XPrint out the current macro definitions.
- X.Ip "&&keys commands" 8
- XDefine additional macros.
- X.Ip !command 8
- XEscape to a subshell.
- XOne exclamation mark (!) leaves you in your own news directory.
- XA double exclamation mark (!!) leaves you in the spool
- Xdirectory for news, which on most systems is /usr/spool/news that don't use NNTP.
- XThe environment variable SHELL will be used if defined.
- XIf
- X.I command
- Xis null, an interactive shell is started.
- X.Ip q 8
- XQuit.
- X.Ip x 8
- XQuit, restoring .newsrc to its state at startup of
- X.IR trn .
- XThe .newsrc you would have had if you had exited with \*(L'q\*(R' will be
- Xcalled .newnewsrc, in case you didn't really want to type \*(L'x\*(R'.
- X.Ip ^K 8
- XEdit the global KILL file.
- XThis is a file which contains /pattern/j commands (one per line) to be
- Xapplied to every newsgroup as it is started up, that is, when it is
- Xselected on the newsgroup selection level.
- XThe purpose of a KILL file is to mark articles as read on the basis of some
- Xset of patterns.
- XThis saves considerable wear and tear on your \*(L'n\*(R' key.
- XThere is also a local KILL file for each newsgroup.
- XBecause of the overhead involved in searching for articles to kill, it is
- Xbetter if possible to use a local KILL file.
- XLocal KILL files are edited with a \*(L'^K\*(R' on the article selection level.
- XThere are also automatic ways of adding search commands to the local KILL
- Xfile\*(--see the \*(L'K\*(R' and \*(L'T\*(R' commands, and the K search
- Xmodifier on the article selection level.
- X.Sp
- XIf either of the environment variables VISUAL or EDITOR is set, the
- Xspecified editor will be invoked; otherwise a default editor (normally vi(1))
- Xis invoked on the KILL file.
- X.Sh "Thread Selection Level"
- XMost people who don't have all day to read news will want to enter a newsgroup
- Xby way of the thread selector.
- XThis is accomplished by using the \*(L'+\*(R'
- Xcommand at the newsgroup selection level.
- XIn fact, this may be the default command for entering a newsgroup, depending
- Xon how your version of
- X.I trn
- Xwas configured (see the
- X.B \-X
- Xoption for how to turn this default on or off).
- XThe thread selector displays a list of article subjects and (optionally)
- Xauthors grouped into threads.
- XA thread may contain multiple subjects if the subject changes as the
- Xdiscussion continues.
- XAlso displayed is a count of the number of unread articles in each thread.
- XEach thread is preceded by a letter from \*(L'a\*(R' to \*(L'z\*(R'
- X(skipping \*(L'q\*(R') which is typed to select the associated thread.
- XWhen selected, the thread's letter will be flagged with a \*(L'+\*(R'.
- X.Sp
- XThe default is to display the long mode of the thread selector.
- XIn this mode, all the authors of the articles in the thread are summarized,
- Xone per line (authors of multiple articles are listed only once).
- XThe medium display mode groups multiple authors onto the same line, so that
- Xmore threads can be displayed at one time.
- XThe short display mode does not display any author names, and can display
- Xmore characters in the subject.
- X.PP
- XThe following commands are available in the thread selector:
- X.Ip "a-z,0-9" 8
- XSelect the discussion thread by its letter or number;
- Xpress again to deselect.
- XBy default the letters h, k, n, p, q, and y are omitted to allow them
- Xto be typed as commands.
- XSee the variable SELECTCHARS customize this.
- X.Ip SP 8
- XPerform the default command.
- XThis is usually > for most pages, and Z on the last page (although K and X
- Xare also quite popular).
- X.Ip CR 8
- XRead the current thread (if none are selected) or all the selected threads.
- X.Ip "Z,TAB" 8
- XBegin reading the selected threads.
- XIf none are are selected, read everything.
- X.Ip "y, \*(L'.\*(R'" 8
- XToggle the current thread's selection (the one under the cursor).
- X.Ip "k, \*(L',\*(R'" 8
- XMark the current thread as killed.
- X.Ip "m, \e" 8
- XUnmark the current thread.
- X.Ip \- 8
- XSet a range, as in 2 \- 5.
- XRepeats the last marking action: selected, unselected, killed, or unmarked.
- X.Ip @ 8
- XToggle all visible article selections.
- X.Ip < 8
- XGo to previous page.
- X.Ip > 8
- XGo to next page.
- X.Ip "p, [" 8
- XMove up to the previous thread.
- X.Ip "n, ]" 8
- XMove down to the next thread.
- X.Ip ^ 8
- XGo to first page.
- X.Ip $ 8
- XGo to last page.
- X.Ip X 8
- XMark all unselected articles as read and start reading.
- X.Ip J 8
- XMark all selected articles as read (useful after performing some action
- Xon them with the \*(L':\*(R' command).
- X.Ip D 8
- XMark unselected articles on the current page as read.
- XBegin reading if articles are selected, otherwise go to the next page.
- X.Ip ^K 8
- XEdit the local KILL file for this newsgroup.
- XA detailed description of KILL files is found in the Article Selection section.
- X.Ip ":command" 8
- XExecute a command upon all the selected threads and their articles.
- XIf no threads are selected, all threads with unread articles are affected.
- X.Sp
- XApplicable commands include \*(L'+\*(R' and \*(L'-\*(R' (select and unselect
- Xthread), \*(L'T\*(R' (trash the thread into the local KILL file), \*(L't\*(R'
- X(display article tree), \*(L"s dest\*(R" (save article to a destination),
- X\*(L"e dir\*(R" (extract to directory), \*(L'E\*(R' (end partial uudecode),
- Xas well as: S, |, w, W, m, M, j, and =.
- X.Ip "/pattern" 8
- XScan all articles for a subject containing
- X.I pattern
- Xand select its thread.
- X.Ip "/pattern/modifiers:command{:command}" 8
- XApply the commands listed to articles matching the search command (possibly
- Xwith h, a, r, or K modifiers).
- XThe default action, if no command is specified, is to select the parent
- Xthread of the matching article (the \*(L'+\*(R' command).
- XSee the section on Regular Expressions, and the description of pattern
- Xsearching in the Article Selection section.
- X.Sp
- XOne example: to scan all the unread articles looking for \*(L"topic\*(L"
- Xanywhere in the article and then select its thread and save the article to
- Xthe files topic.1, topic.2, etc. use \*(L"/topic/a:+:s topic.%#\*(R".
- X.Ip N 8
- XLeave this group as-is and go on to the next newsgroup prompt.
- X.Ip U 8
- XSwitch between selecting read/unread articles.
- X.Ip L 8
- XSwitch the current display mode between the long and medium modes
- X(with authors) and the short mode.
- X(See the
- X.B \-x
- Xoption to select your favorite mode as the default.)
- X.Ip & 8
- XDisplay or set the current status of command line switches.
- X.Ip && 8
- XDisplay or set the current macro definitions.
- X.Ip !command 8
- XEscape to a subshell.
- X.Ip "q,ESC" 8
- XQuit selection mode.
- X.Ip Q 8
- XQuit the current newsgroup and return to the newsgroup selection prompt
- Xfor this group.
- X.Sh "Article Selection Level"
- XOn the article selection level,
- X.I trn
- Xdisplays unread articles in thread sequence, reading each article and its
- Xreplies before going on to another topic.
- XIf threads are disabled for a particular group, the default order is
- Xin numeric sequence (the order they arrived at your site) unless you
- Xuse subject search (^N) to change the default order to be
- Xnumerical order within each matching subject.
- X(The
- X.B \-S
- Xswitch can be used to make subject search mode the default for unthreaded
- Xgroups.)
- X.Sp
- XOn the article selection level you are
- X.I not
- Xasked whether you want to read an article before the article is displayed;
- Xrather,
- X.I trn
- Xsimply displays the first page (or portion of a page, at low baud rates) of the
- Xarticle and asks if you want to continue.
- XThe normal article selection prompt comes at the END of the article
- X(though article selection commands can be given from within the middle
- Xof the article (the pager level) also).
- XThe prompt at the end of an article looks like this:
- X.Sp
- XEnd of article 248 (of 257)\*(--what next? [npq]
- X.Sp
- XThe following are the options at this point:
- X.Ip n,SP 8
- XScan forward for next unread article.
- X(Note: the \*(L'n\*(R' (next) command when typed at the end of an article
- Xdoes not mark the article as read, since an article is automaticaly marked
- Xas read after the last line of it is printed.
- XIt is therefore possible to type a sequence such as \*(L'mn\*(R' and leave
- Xthe article marked as unread.
- XThe fact that an article is marked as read by typing n, N, ^N, e, s, S, |,
- Xw, or W within the MIDDLE of the article is in fact a special case.)
- X.Ip N 8
- XGo to the next article.
- X.Ip ^N 8
- XScan forward for the next article with the same subject.
- XIf the group is unthreaded this also makes subject search mode (^N)
- Xthe default.
- X.Ip p 8
- XScan backward for previous unread article.
- XIf there is none, stay at the current article.
- X.Ip P 8
- XGo to the previous article.
- X.Ip \- 8
- XGo to the previously displayed article (regardless of whether that article
- Xis before or after this article in the normal sequence).
- X.Ip ^P 8
- XScan backward for the previous article with the same subject.
- XMakes subject search mode (^N) the default if the group is unthreaded.
- X.Ip "<,>" 8
- XBrowse the previous/next selected thread.
- XIf no selections have been made, all the threads that had unread news when
- Xyou entered the newsgroup (or last left the thread selector) are treated
- Xas selected.
- XEntering an empty newsgroup makes all the already-read threads available
- Xfor browsing.
- X.Ip "[,]" 8
- XProceed to the left/right in the article tree.
- XVisits already-read articles as well as empty nodes.
- XIf you attempt to go past the left/right edge of the tree, you are advanced
- Xto the previous/next line if available.
- X.Ip "{,}" 8
- XGo to the root/leaf of the article tree, even if the node is
- Xalready read or empty.
- XProceeds to the very first/last node if you're already at a root/leaf in
- Xa multi-root thread.
- X.Ip t 8
- XDisplay the entire article tree and all its associated subjects.
- X.Ip ^R 8
- XRestart the current article.
- X.Ip v 8
- XRestart the current article verbosely, displaying the entire header.
- X.Ip ^L 8
- XRefresh the screen.
- X.Ip ^X 8
- XRestart the current article, and decrypt as a rot13 message.
- X.Ip X 8
- XRefresh the screen, and decrypt as a rot13 message.
- X.Ip b 8
- XBack up one page.
- X.Ip q 8
- XQuit this newsgroup and go back to the newsgroup selection level.
- X.Ip ^ 8
- XGo to the first unread article.
- X.Ip $ 8
- XGo to the last article (actually, one past the last article).
- X.Ip "number" 8
- XGo to the numbered article.
- X.Ip "range{,range}:command{:command}" 8
- XApply a set of commands to a set of articles.
- XA range consists of either <article number> or
- X<article\ number>\-<article\ number>.
- XA dot \*(L'.\*(R' represents the current article, and a dollar
- Xsign \*(L'$\*(R' represents the last article.
- X.Sp
- XApplicable commands include \*(L'm\*(R' (mark as unread), \*(L'M\*(R'
- X(delayed mark as unread), \*(L'j\*(R' (mark as read), \*(L"s dest\*(R"
- X(save to a destination), \*(L"e dir"\*(R" (extract to directory),
- X\&\*(L"!command\*(R" (shell escape), \*(L"=\*(R" (print the subject),
- X\&\*(L'T\*(R' (trash the thread into the local KILL file), \*(L'+\*(R'
- X(select the thread), \*(L'-\*(R' (deselect the thread), \*(L'C\*(R'
- X(cancel), as well as S, |, w, W, and t.
- X.Ip ":command" 8
- XApply a command to all selected threads and their articles.
- XIf no threads are selected, apply the command to all the unread threads.
- XFor applicable commands, see the discussion above for the range command.
- X.Ip j 8
- XJunk the current article\*(--mark it as read.
- XIf this command is used from within an article, you are left at the end of
- Xthe article, unlike \*(L'n\*(R', which looks for the next article.
- X.Ip m 8
- XMark the current article as still unread.
- X(If you are in subject search mode you probably want to use M instead of m.
- XOtherwise the current article may be selected as the beginning of the next
- Xsubject thread.)
- X.Ip M 8
- XMark the current article as still unread, but not until the newsgroup
- Xis exited.
- XUntil then, the current article will be marked as read.
- XThis is useful for returning to an article in another session, or in another
- Xnewsgroup.
- X.Ip /pattern 8
- XScan forward for article containing
- X.I pattern
- Xin the subject.
- XSee the section on Regular Expressions.
- XTogether with the escape substitution facility described later, it becomes
- Xeasy to search for various attributes of the current article, such as
- Xsubject, article ID, author name, etc.
- XThe previous pattern can be recalled with \*(L"<esc>/\*(R".
- XIf
- X.I pattern
- Xis omitted, the previous pattern is assumed.
- X.Ip /pattern/h 8
- XScan forward for article containing
- X.I pattern
- Xin the header.
- X.Ip /pattern/a 8
- XScan forward for article containing
- X.I pattern
- Xanywhere in article.
- X.Ip /pattern/r 8
- XScan read articles also.
- X.Ip /pattern/c 8
- XMake search case sensitive.
- XOrdinarily upper- and lower-case are considered the same.
- X.Ip "/pattern/modifiers:command{:command}" 8
- XApply the commands listed to articles matching the search command (possibly
- Xwith h, a, or r modifiers).
- XApplicable commands include \*(L'm\*(R' (mark as unread), \*(L'M\*(R'
- X(delayed mark as unread), \*(L'j\*(R' (mark as read), \*(L"s dest\*(R"
- X(save to a destination), \*(L"e dir"\*(R" (extract to directory),
- X\&\*(L"!command\*(R" (shell escape), \*(L"=\*(R" (print the subject),
- X\&\*(L'T\*(R' (trash the associated thread and put it in the local KILL
- Xfile), \*(L'+\*(R' (select the associated thread), \*(L'-\*(R' deselect
- Xthe associated thread), and \*(L'C\*(R' (cancel).
- XIf the first command is \*(L'm\*(R' or \*(L'M\*(R', modifier r is assumed.
- XA K may be included in the modifiers (not the commands) to cause the
- Xentire command (sans K) to be saved to the local KILL file, where it will
- Xbe applied to every article that shows up in the newsgroup.
- X.Sp
- XFor example, to save all articles in a given newsgroup to the line printer
- Xand mark them read, use \*(L"/^/\||\|lpr:j\*(R".
- XIf you type \*(L"/^/K\||\|lpr:j\*(R", this will happen every time you enter the
- Xnewsgroup.
- X.Ip ?pattern 8
- XScan backward for article containing
- X.I pattern
- Xin the subject.
- XMay be modified as the forward search is: ?pattern?modifiers[:commands].
- XIt is likely that you will want an r modifier when scanning backward.
- X.Ip k 8
- XMark as read all articles with the same subject as the current article.
- X(Note: there is no single character command to temporarily mark as read (M
- Xcommand) articles matching the current subject.
- XThat can be done with \*(L"/<esc>s/M\*(R", however.)
- X.Ip \, 8
- XMark the current article and all its replies as read.
- X.Ip J 8
- XJunk all the articles in the thread, even if it contains multiple subjects.
- X.Ip K 8
- XDo the same as the k command, but also add a line to the local KILL file for
- Xthis newsgroup to kill this subject every time the newsgroup is started up.
- XFor a discussion of KILL files, see the \*(L'^K\*(R' command below.
- XSee also the K modifier on searches above.
- X.Ip T 8
- XKill the current thread, and also add a line to the local KILL file for
- Xthis newsgroup to kill new articles attached to this thread every time the
- Xnewsgroup is started up.
- X.Ip ^K 8
- XEdit the local KILL file for this newsgroup.
- XEach line of the KILL file should be a subject-killing command of the
- Xform /pattern/j or a thread killing command of the form T<number>.
- XThe thread killing commands are usually followed by a comment to let
- Xyou know the primary subject of the numbered thread being killed.
- XThe first line in the KILL file has the form \*(L"THRU <number>\*(R",
- Xwhich tells
- X.I trn
- Xthe maximum article number that the KILL file has been applied to.
- X(You may delete the THRU line to force a rescan of current articles.)
- XYou may also have reason to use the m, h, or a modifiers.
- XBe careful with the M modifier in a kill file\*(--there are more efficient
- Xways to never read an article.
- XYou might have reason to use it if a particular series of articles is posted
- Xto multiple newsgroups.
- XIn this case, M would force you to view the article in a different newsgroup.
- X.Sp
- XTo see only newgroup articles in the control newsgroup, for instance, you
- Xmight put
- X.Sp
- X/^/j
- X.br
- X/newgroup/m
- X.Sp
- Xwhich kills all subjects not containing \*(L"newgroup\*(R".
- XYou can add lines automatically via the K command and K search modifiers,
- Xbut editing is the only way to remove lines.
- XIf either of the environment variables VISUAL or EDITOR is set, the
- Xspecified editor will be invoked; otherwise a default editor (normally vi)
- Xis invoked on the KILL file.
- X.Sp
- XThe KILL file may also contain switch setting lines beginning with \*(L'&\*(R'.
- XAdditionally, any line beginning with \*(L'X\*(R' is executed on exit
- Xfrom the newsgroup rather than on entrance.
- XThis can be used to set switches back to a default value.
- XOne use for this capability is to set your save directory to a custom value
- Xupon entry to a newsgroup and set it back on exit using the \-ESAVEDIR option.
- XSee also the
- X.B \-/
- Xoption for another solution to multiple save directories without using KILL
- Xfiles.
- X.Ip r 8
- XReply through net mail.
- XThe environment variables MAILPOSTER and MAILHEADER may be used to modify
- Xthe mailing behavior of
- X.I trn
- X(see environment section).
- XIf on a nonexistent article such as the "End of newsgroup" pseudo-article
- X(which you can get to with a \*(L'$\*(R' command), invokes the mailer to
- Xnobody in particular.
- X.Ip R 8
- XReply, including the current article in the header file generated.
- X(See \*(L'F\*(R' command below).
- XThe YOUSAID environment variable controls the format of the attribution line.
- X.Ip f 8
- XSubmit a followup article.
- XIf on a nonexistent article such as the "End of newsgroup" pseudo-article
- X(which you can get to with a \*(L'$\*(R' command), posts an original
- Xarticle (basenote).
- X.Ip F 8
- XSubmit a followup article, and include the old article, with lines prefixed
- Xeither by \*(L">\*(R" or by the argument to a
- X.B \-F
- Xswitch.
- X.I Trn
- Xwill attempt to provide an attribution line in front of the quoted article,
- Xgenerated from the From: line of the article.
- XUnfortunately, the From: line doesn't always contain the right name; you
- Xshould double check it against the signature and change it if necessary,
- Xor you may have to apologize for quoting the wrong person.
- XThe environment variables NEWSPOSTER, NEWSHEADER and ATTRIBUTION may be
- Xused to modify the posting behavior of
- X.I trn
- X(see environment section).
- X.Sp
- XIf you are starting a new subject, move to the end of the newsgroup
- Xwith the \*(L'$\*(R' command before pressing \*(L'f\*(R'.
- XOtherwise you may have to do a lot of header editing, including
- X.I "removing the References line"
- X-- this is IMPORTANT to remember ONLY when starting a new subject.
- XIt is much simpler to remember \*(L"$f\*(R" for new subjects, and to
- Xallways leave the References line alone.
- X.Ip C 8
- XCancel the current article, but only if you are the contributor or superuser.
- X.Ip c 8
- XCatch up in this newsgroup; i.e., mark all articles as read.
- X.Ip U 8
- XMark some or all articles as unread.
- XYou can choose to mark the current thread, sub-thread (the current article
- Xand its replies), all the articles, or start up the thread selector
- Xto choose specific threads to set unread.
- X.Ip u 8
- XUnsubscribe from this newsgroup.
- X.Ip "s destination" 8
- XSave to a filename or pipe using sh.
- XIf the first character of the destination is a vertical bar, the rest of
- Xthe command is considered a shell command to which the article is passed
- Xthrough standard input.
- XThe command is subject to filename expansion.
- X(See also the environment variable PIPESAVER.)
- XIf the destination does not begin with a vertical bar, the rest of the
- Xcommand is assumed to be a filename of some sort.
- XAn initial tilde \*(L'~\*(R' will be translated to the name of the home
- Xdirectory, and an initial environment variable substitution is also allowed.
- XIf only a directory name is specified, the environment variable SAVENAME
- Xis used to generate the actual name.
- XIf only a filename is specified (i.e. no directory), the environment variable
- XSAVEDIR will be used to generate the actual directory.
- XIf nothing is specified, then obviously both variables will be used.
- XSince the current directory for
- X.I trn
- Xwhile doing a save command is your
- Xprivate news directory, typing \*(L"s ./filename\*(R" will force the file
- Xto your news directory.
- XSave commands are also run through % interpretation, so that you can
- Xenter \*(L"s %O/filename\*(R" to save to the directory you were in when you ran
- X.IR trn ,
- Xand \*(L"s %t\*(R" to save to a filename consisting of the Internet address
- Xof the sender.
- X.Sp
- XAfter generating the full pathname of the file to save to,
- X.I trn
- Xdetermines if the file exists already, and if so, appends to it.
- X.I trn
- Xwill attempt to determine if an existing file is a mailbox or a normal file,
- Xand save the article in the same format.
- XIf the output file does not yet exist,
- X.I trn
- Xwill by default ask you which format you want, or you can make it skip the
- Xquestion with either the
- X.B \-M
- Xor
- X.B \-N
- Xswitch.
- XIf the article is to be saved in mailbox format, the command to do so is
- Xgenerated from the environment variable MBOXSAVER.
- XOtherwise, NORMSAVER is used.
- X.Ip "S destination" 8
- XSave to a filename or pipe using a preferred shell, such as csh.
- XWhich shell is used depends first on what you have the environment variable
- XSHELL set to, and in the absence of that, on what your news administrator
- Xset for the preferred shell when he or she installed
- X.IR trn .
- X.Ip "| command" 8
- XShorthand for \*(L"s | command\*(R".
- X.Ip "w destination" 8
- XThe same as \*(L"s destination\*(R", but saves without the header.
- X.Ip "W destination" 8
- XThe same as \*(L"S destination\*(R", but saves without the header.
- X.Ip "e directory" 8
- XExtract a shell archive or uuencoded binary to the designated directory.
- XThe article is first scanned to try discover what type of data is
- Xencapsulated.
- XIf a \*(L"cut here\*(R" line is found, first non-blank following
- Xline must be either the start of a shar header, or the \*(L"begin\*(R"
- Xor \*(L"table\*(R" line of a uuencoded binary.
- XThe default for extracting shars is to send the data portion of the file
- Xto /bin/sh, but that can be overridden with the UNSHAR variable (see the
- XENVIRONMENT section).
- XUudecoding is done internally by a decoder that can handle the data
- Xbeing split up over multiple articles, and extracted one piece at a time.
- XTo decode a multi-article file, either execute the \*(L'e\*(R'
- Xcommand in each article in sequence (use \*(L"e %m\*(R" to extract to the
- Xsame directory as the last command), use an article range to execute the
- Xcommand, or use the \*(L":e\*(R" command to execute the command on the
- Xcurrently selected articles.
- XIf a uudecoding is in-progress (the last piece wasn't extracted yet)
- Xand you exit the group, the partial file will be removed.
- XThis also occurs if you start to extract a new uuencoded file before the
- Xprevious one was finished.
- XSee also the \*(L'E\*(R' command for ending a multi-part uudecoding
- Xmanually.
- X.Sp
- XThere is one special case that we handle: if the very first file in a
- Xrecognizable shar file is a uuencoded binary that was packed with lines
- Xstarting with an \*(L'X\*(R', we will not unshar the file but instead
- Xuudecode it.
- XIf this causes problems, you can override the default extraction method
- Xby following the directory with an explicit command to execute, as
- Xdescribed below.
- X.Ip "e directory|command" 8
- XThis form of the \*(L'e\*(R' command allows you to extract other data
- Xformats than shar or uuencoded files or to override the decisions made
- Xby the automatic extraction selection described above.
- XIn normal operation, all data following what we recognize as
- Xa \*(L"cut here\*(R" line will be send to the specified command.
- XAdditionally, the distinctive beginning of a shell archive is also recognized
- Xwithout a preceding cut line.
- XThe default directory is set to the specified directory, or the value
- Xof SAVEDIR if unspecified.
- XYou can repeat your previous extract command by specifying \*(L"e %b|%e\*R"
- X(or just \*(L"e %b\*(R" if no command was provided).
- X.Ip E 8
- XThis command ends any multi-part uuencoded file extraction that you began,
- Xbut are unable (or unwilling) to complete.
- XThe partially extracted file is removed.
- X.Ip & 8
- XPrint out the current status of command line switches.
- X.Ip "&switch {switch}" 8
- XSet additional command line switches.
- X.Ip && 8
- XPrint out current macro definitions.
- X.Ip "&&keys commands" 8
- XDefine an additional macro.
- X.Ip !command 8
- XEscape to a subshell.
- XOne exclamation mark (!) leaves you in your own news directory.
- XA double exclamation mark (!!) leaves you in the spool
- Xdirectory of the current newsgroup.
- XThe environment variable SHELL will be used if defined.
- XIf
- X.I command
- Xis null, an interactive shell is started.
- X.Sp
- XYou can use escape key substitutions described later to get to many
- Xrun-time values.
- XThe command is also run through % interpretation, in case it is being called
- Xfrom a range or search command.
- X.Ip \+ 8
- XStart the thread selector.
- XIf the newsgroup is unthreaded, the subject lister is called instead.
- X.Ip = 8
- XList subjects of unread articles.
- X.Ip # 8
- XPrint last article number.
- X.Sh "Pager Level"
- XAt the pager level (within an article), the prompt looks like this:
- X.Sp
- X\*(--MORE\*(--(17%)
- X.Sp
- Xand a number of commands may be given:
- X.Ip SP 8
- XDisplay next page.
- X.Ip x 8
- XDisplay next page and decrypt as a rot13 message.
- X.Ip d 8
- XDisplay half a page more.
- X.Ip CR 8
- XDisplay one more line.
- X.Ip q 8
- XGo to the end of the current article (don't mark it either read or unread).
- XLeaves you at the \*(L"What next?\*(R" prompt.
- X.Ip j 8
- XJunk the current article.
- XMark it read and go to the end of the article.
- X.Ip ^L 8
- XRefresh the screen.
- X.Ip X 8
- XRefresh the screen and decrypt as a rot13 message.
- X.Ip b 8
- XBack up one page.
- X.Ip t 8
- XDisplay the entire article tree, including its associated subjects, and
- Xcontinue reading.
- X.Ip gpattern 8
- XGoto (search forward for)
- X.I pattern
- Xwithin current article.
- XNote that there is no space between the command and the pattern.
- XIf the pattern is found, the page containing the pattern will be displayed.
- XWhere on the page the line matching the pattern goes depends on the value
- Xof the
- X.B \-g
- Xswitch.
- XBy default the matched line goes at the top of the screen.
- X.Ip G 8
- XSearch for g pattern again.
- END_OF_FILE
- if test 37631 -ne `wc -c <'trn.1.1'`; then
- echo shar: \"'trn.1.1'\" unpacked with wrong size!
- fi
- # end of 'trn.1.1'
- fi
- echo shar: End of archive 3 \(of 14\).
- cp /dev/null ark3isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 14 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
-